g_dbus_method_invocation_return_value (invocation, g_variant_new ("((so))", name, path));
}
+ else if (g_strcmp0 (method_name, "GetChildren") == 0)
+ {
+ GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("a(so)"));
+
+ guint n_toplevels = g_list_model_get_n_items (self->toplevels);
+ for (guint i = 0; i < n_toplevels; i++)
+ {
+ GtkWidget *window = g_list_model_get_item (self->toplevels, i);
+
+ g_object_unref (window);
+
+ if (!gtk_widget_get_visible (window))
+ continue;
+
+ GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (window));
+ const char *name = g_dbus_connection_get_unique_name (self->connection);
+ const char *path = gtk_at_spi_context_get_context_path (GTK_AT_SPI_CONTEXT (context));
+
+ g_variant_builder_add (&builder, "(so)", name, path);
+ }
+
+ g_dbus_method_invocation_return_value (invocation, g_variant_new ("(a(so))", &builder));
+ }
}
static GVariant *